This document contains figures and statistics used for Time-Frequency Representation (TFR) analyses.
source('ana/shared.R')
source('ana/permutationTtest.R')
We transform the signals across epochs into time-frequency representations (TFRs) using Morlet wavelet (6 cycles) convolution. The frequencies we include are log-spaced values that range from 6 to 35 Hz. First, we show plots time-locked to feedback onset. We include 250 ms before the feedback onset, to show TFRs around the movement onset. However, we focus our statistical analyses for the second that follows feedback onset.
We define early and late conditions in a similar manner to how we defined these conditions in our ERP analyses. That is, we consider the first two blocks of rotation and mirror training (first 12 trials) as early training and the last six blocks (36 trials) as late training. For the random rotation, we combined both random rotation sets as they do not show differences in performance. From this combined set of trials, the first two blocks (12 trials) are considered as early training, while the last 4 blocks (24 trials) are considered as late training.
We then generate TFRs for each of the conditions (early vs. late for fixed rotation, mirror reversal, random rotation), and calculate TFRs for the baseline aligned reaches (48 trials). We focused on two different regions of interest (ROIs): the medial frontal areas (F1, Fz, F2, FC1, FCz, FC2, C1, Cz, C2) and lateral central areas of the left hemisphere (i.e., opposite the moving hand; C5, C3, CP5, CP3, CP1, P5, P3, P1).
For each ROI, we calculate the mean power (µV²) within each participant of the following frequency bands: theta (6-8 Hz), alpha (9-13 Hz), and beta (13-25 Hz). We then compare these mean frequencies between early and late training for the different perturbation types.
First, we compare each early or late condition to the aligned baseline condition. For statistical analyses, we implemented a cluster-based permutation t-test. Clusters of time points that exceed the t-value threshold (determined by a t-distribution, given a p-value of 0.05 and sample size of 32) will be shown in light orange or red colors, while clusters of time points that significantly differ from chance after 1000 permutations will be shown in dark orange or red colors.
plotPermTestEarlyLateTFRs(freqs = 'theta', roi = 'medfro')
plotPermTestEarlyLateTFRs(freqs = 'theta', roi = 'latcen')
plotPermTestEarlyLateTFRs(freqs = 'alpha', roi = 'medfro')
plotPermTestEarlyLateTFRs(freqs = 'alpha', roi = 'latcen')
plotPermTestEarlyLateTFRs(freqs = 'beta', roi = 'medfro')
plotPermTestEarlyLateTFRs(freqs = 'beta', roi = 'latcen')
getEarlyLateTFRPvalStats(comparison = 'vsAligned', erps = 'frn', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 theta_earlyrot 188 201 0.940 1.000 0.222
## 2 1 theta_laterot 46 74 0.230 0.365 0.135
## 3 2 theta_laterot 110 181 0.550 0.900 0.025
## 4 3 theta_earlyrdm 0 54 0.000 0.265 0.019
## 5 4 theta_earlyrdm 84 146 0.420 0.725 0.027
## 6 5 theta_earlyrdm 165 201 0.825 1.000 0.066
## 7 6 theta_laterdm 2 101 0.010 0.500 0.018
## 8 7 theta_earlymir 0 49 0.000 0.240 0.039
## 9 8 theta_earlymir 194 201 0.970 1.000 0.197
## 10 9 theta_latemir 14 87 0.070 0.430 0.032
## 11 10 alpha_earlyrot 15 17 0.075 0.080 0.301
## 12 11 alpha_earlyrot 192 201 0.960 1.000 0.244
## 13 12 alpha_laterot NA NA NA NA NA
## 14 13 alpha_earlyrdm 58 102 0.290 0.505 0.058
## 15 14 alpha_earlyrdm 121 184 0.605 0.915 0.020
## 16 15 alpha_laterdm NA NA NA NA NA
## 17 16 alpha_earlymir 19 45 0.095 0.220 0.124
## 18 17 alpha_earlymir 173 192 0.865 0.955 0.162
## 19 18 alpha_latemir 21 23 0.105 0.110 0.229
## 20 19 beta_earlyrot NA NA NA NA NA
## 21 20 beta_laterot 36 46 0.180 0.225 0.331
## 22 21 beta_earlyrdm 37 123 0.185 0.610 0.002
## 23 22 beta_earlyrdm 152 174 0.760 0.865 0.121
## 24 23 beta_laterdm NA NA NA NA NA
## 25 24 beta_earlymir 7 9 0.035 0.040 0.373
## 26 25 beta_earlymir 97 152 0.485 0.755 0.011
## 27 26 beta_latemir 8 29 0.040 0.140 0.123
getEarlyLateTFRPvalStats(comparison = 'vsAligned', erps = 'frn', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 theta_earlyrot NA NA NA NA NA
## 2 1 theta_laterot 101 192 0.505 0.955 0.013
## 3 2 theta_earlyrdm 9 37 0.045 0.180 0.152
## 4 3 theta_earlyrdm 90 201 0.450 1.000 0.001
## 5 4 theta_laterdm 0 19 0.000 0.090 0.201
## 6 5 theta_laterdm 28 81 0.140 0.400 0.039
## 7 6 theta_earlymir 0 1 0.000 0.000 0.233
## 8 7 theta_earlymir 103 201 0.515 1.000 0.013
## 9 8 theta_latemir NA NA NA NA NA
## 10 9 alpha_earlyrot NA NA NA NA NA
## 11 10 alpha_laterot 110 157 0.550 0.780 0.061
## 12 11 alpha_earlyrdm 38 178 0.190 0.885 0.001
## 13 12 alpha_earlyrdm 197 201 0.985 1.000 0.260
## 14 13 alpha_laterdm NA NA NA NA NA
## 15 14 alpha_earlymir 61 70 0.305 0.345 0.255
## 16 15 alpha_earlymir 175 189 0.875 0.940 0.210
## 17 16 alpha_latemir 0 71 0.000 0.350 0.023
## 18 17 beta_earlyrot 14 22 0.070 0.105 0.283
## 19 18 beta_laterot NA NA NA NA NA
## 20 19 beta_earlyrdm 60 112 0.300 0.555 0.018
## 21 20 beta_laterdm NA NA NA NA NA
## 22 21 beta_earlymir 113 173 0.565 0.860 0.027
## 23 22 beta_latemir 17 25 0.085 0.120 0.248
We then calculate the TFR differences between each early or late condition and the aligned condition. Then we compare early from late in each of the perturbation types.
plotPermTestEarlyLateDiffWavesTFRs(freqs = 'theta', roi = 'medfro')
plotPermTestEarlyLateDiffWavesTFRs(freqs = 'theta', roi = 'latcen')
For the medial frontal areas, we observe differences between early and late in the random perturbation. This difference occurs around 300 ms up to 1 second following feedback onset.
For the lateral central areas, we observe a difference in the random and mirror perturbations, where we observe early training to be more negative than the late condition.
plotPermTestEarlyLateDiffWavesTFRs(freqs = 'alpha', roi = 'medfro')
plotPermTestEarlyLateDiffWavesTFRs(freqs = 'alpha', roi = 'latcen')
For the medial frontal areas, we do not find any significant clusters.
For the lateral central areas, we observe a difference between early and late training in the rotation perturbation, where late training is more positive around 500 ms to 750 ms post-feedback onset.
plotPermTestEarlyLateDiffWavesTFRs(freqs = 'beta', roi = 'medfro')
plotPermTestEarlyLateDiffWavesTFRs(freqs = 'beta', roi = 'latcen')
For the medial frontal areas, we find differences between early and late training for the random perturbation, with early training having more negative beta power around 250 to 500 ms post-feedback.
For the lateral central areas, we observe differences in the mirror perturbation, where early training is more negative than late, around 500 ms to 900 ms post-feedback.
getEarlyLateTFRPvalStats(comparison = 'EarlyvsLate', erps = 'frn', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_medfro_rot 168 201 0.840 1.000
## 2 1 theta_medfro_rdm 67 201 0.335 1.000
## 3 2 theta_medfro_mir 122 140 0.610 0.695
## 4 3 alpha_medfro_rot 187 201 0.935 1.000
## 5 4 alpha_medfro_rdm 139 169 0.695 0.840
## 6 5 alpha_medfro_mir NA NA NA NA
## 7 6 beta_medfro_rot NA NA NA NA
## 8 7 beta_medfro_rdm 6 15 0.030 0.070
## 9 8 beta_medfro_rdm 39 106 0.195 0.525
## 10 9 beta_medfro_mir 104 111 0.520 0.550
## p_values
## 1 0.104
## 2 0.005
## 3 0.158
## 4 0.249
## 5 0.120
## 6 NA
## 7 NA
## 8 0.266
## 9 0.016
## 10 0.287
getEarlyLateTFRPvalStats(comparison = 'EarlyvsLate', erps = 'frn', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 theta_latcen_rot 144 201 0.720 1.000 0.061
## 2 1 theta_latcen_rdm 73 155 0.365 0.770 0.031
## 3 2 theta_latcen_mir 105 157 0.525 0.780 0.034
## 4 3 alpha_latcen_rot 100 148 0.500 0.735 0.048
## 5 4 alpha_latcen_rdm NA NA NA NA NA
## 6 5 alpha_latcen_mir 0 13 0.000 0.060 0.193
## 7 6 beta_latcen_rot NA NA NA NA NA
## 8 7 beta_latcen_rdm 64 102 0.320 0.505 0.058
## 9 8 beta_latcen_mir 106 188 0.530 0.935 0.012
Next, we subtract the early from the late condition, across the different perturbation types. Then, we compare each perturbation type with the other two. Statistical analyses will still be based from the cluster-based permutation tests conducted on these difference waves.
plotPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'theta', roi = 'medfro')
plotPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'theta', roi = 'latcen')
We do not observe any significant clusters for both regions of interest.
plotPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'alpha', roi = 'medfro')
plotPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'alpha', roi = 'latcen')
We do not observe any significant clusters for both regions of interest.
plotPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'beta', roi = 'medfro')
plotPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'beta', roi = 'latcen')
We observe a significant cluster when comparing fixed and random rotation perturbations, around 250 ms post-feedback, with random rotation showing more positive activity.
getEarlyLateTFRPvalStats(comparison = 'PerturbTypeComp', erps = 'frn', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_medfro_rotvmir NA NA NA NA
## 2 1 theta_medfro_rotvrdm 81 129 0.405 0.640
## 3 2 theta_medfro_mirvrdm NA NA NA NA
## 4 3 alpha_medfro_rotvmir NA NA NA NA
## 5 4 alpha_medfro_rotvrdm NA NA NA NA
## 6 5 alpha_medfro_mirvrdm NA NA NA NA
## 7 6 beta_medfro_rotvmir NA NA NA NA
## 8 7 beta_medfro_rotvrdm 39 95 0.195 0.470
## 9 8 beta_medfro_rotvrdm 141 149 0.705 0.740
## 10 9 beta_medfro_mirvrdm 47 68 0.235 0.335
## p_values
## 1 NA
## 2 0.073
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## 7 NA
## 8 0.016
## 9 0.301
## 10 0.118
getEarlyLateTFRPvalStats(comparison = 'PerturbTypeComp', erps = 'frn', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_latcen_rotvmir 0 7 0.00 0.03
## 2 1 theta_latcen_rotvrdm NA NA NA NA
## 3 2 theta_latcen_mirvrdm NA NA NA NA
## 4 3 alpha_latcen_rotvmir NA NA NA NA
## 5 4 alpha_latcen_rotvrdm NA NA NA NA
## 6 5 alpha_latcen_mirvrdm NA NA NA NA
## 7 6 beta_latcen_rotvmir NA NA NA NA
## 8 7 beta_latcen_rotvrdm 62 89 0.31 0.44
## 9 8 beta_latcen_mirvrdm NA NA NA NA
## p_values
## 1 0.224
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## 7 NA
## 8 0.107
## 9 NA
We repeat the same analyses steps, but now compare small and large errors experienced after the reaching movement. We defined these small and large error conditions similar to how we defined them in our ERP analyses.
For each ROI, we calculate the mean power (µV²) within each participant of the following frequency bands: theta (6-8 Hz), alpha (9-13 Hz), and beta (13-25 Hz). We then compare these mean frequencies between small and large error conditions for the different perturbation types.
First, we compare each small or large condition to the aligned baseline condition. For statistical analyses, we implemented a cluster-based permutation t-test. Clusters of time points that exceed the t-value threshold (determined by a t-distribution, given a p-value of 0.05 and sample size of 32) will be shown in light orange or red colors, while clusters of time points that significantly differ from chance after 1000 permutations will be shown in dark orange or red colors.
plotPermTestSmallLargeTFRs(freqs = 'theta', roi = 'medfro')
plotPermTestSmallLargeTFRs(freqs = 'theta', roi = 'latcen')
plotPermTestSmallLargeTFRs(freqs = 'alpha', roi = 'medfro')
plotPermTestSmallLargeTFRs(freqs = 'alpha', roi = 'latcen')
plotPermTestSmallLargeTFRs(freqs = 'beta', roi = 'medfro')
plotPermTestSmallLargeTFRs(freqs = 'beta', roi = 'latcen')
getSmallLargeTFRPvalStats(comparison = 'vsAligned', erps = 'frn', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 theta_smallrot 109 159 0.545 0.790 0.065
## 2 1 theta_largerot 0 78 0.000 0.385 0.016
## 3 2 theta_largerot 132 151 0.660 0.750 0.158
## 4 3 theta_smallrdm 0 85 0.000 0.420 0.005
## 5 4 theta_smallrdm 191 201 0.955 1.000 0.247
## 6 5 theta_largerdm 0 69 0.000 0.340 0.026
## 7 6 theta_smallmir 14 66 0.070 0.325 0.071
## 8 7 theta_smallmir 198 201 0.990 1.000 0.221
## 9 8 theta_largemir 0 73 0.000 0.360 0.010
## 10 9 theta_largemir 199 201 0.995 1.000 0.254
## 11 10 alpha_smallrot NA NA NA NA NA
## 12 11 alpha_largerot NA NA NA NA NA
## 13 12 alpha_smallrdm 133 158 0.665 0.785 0.113
## 14 13 alpha_largerdm NA NA NA NA NA
## 15 14 alpha_smallmir NA NA NA NA NA
## 16 15 alpha_largemir 99 137 0.495 0.680 0.068
## 17 16 beta_smallrot 108 119 0.540 0.590 0.295
## 18 17 beta_largerot NA NA NA NA NA
## 19 18 beta_smallrdm 87 101 0.435 0.500 0.185
## 20 19 beta_largerdm NA NA NA NA NA
## 21 20 beta_smallmir 35 63 0.175 0.310 0.081
## 22 21 beta_smallmir 70 78 0.350 0.385 0.306
## 23 22 beta_smallmir 88 116 0.440 0.575 0.087
## 24 23 beta_largemir NA NA NA NA NA
getSmallLargeTFRPvalStats(comparison = 'vsAligned', erps = 'frn', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 theta_smallrot 111 165 0.555 0.820 0.047
## 2 1 theta_largerot 14 76 0.070 0.375 0.036
## 3 2 theta_largerot 131 152 0.655 0.755 0.129
## 4 3 theta_smallrdm 13 72 0.065 0.355 0.031
## 5 4 theta_smallrdm 189 201 0.945 1.000 0.217
## 6 5 theta_largerdm 10 38 0.050 0.185 0.124
## 7 6 theta_smallmir 37 63 0.185 0.310 0.154
## 8 7 theta_largemir 0 25 0.000 0.120 0.168
## 9 8 theta_largemir 163 201 0.815 1.000 0.103
## 10 9 alpha_smallrot NA NA NA NA NA
## 11 10 alpha_largerot NA NA NA NA NA
## 12 11 alpha_smallrdm NA NA NA NA NA
## 13 12 alpha_largerdm NA NA NA NA NA
## 14 13 alpha_smallmir 41 77 0.205 0.380 0.092
## 15 14 alpha_largemir 64 112 0.320 0.555 0.052
## 16 15 beta_smallrot 65 67 0.325 0.330 0.434
## 17 16 beta_largerot 13 22 0.065 0.105 0.216
## 18 17 beta_smallrdm NA NA NA NA NA
## 19 18 beta_largerdm NA NA NA NA NA
## 20 19 beta_smallmir NA NA NA NA NA
## 21 20 beta_largemir NA NA NA NA NA
Next, we subtract the aligned condition from each small and large condition, across the different perturbation types. Statistical analyses will still be based from the cluster-based permutation tests conducted on these difference waves
plotPermTestSmallLargeDiffWavesTFRs(freqs = 'theta', roi = 'medfro')
plotPermTestSmallLargeDiffWavesTFRs(freqs = 'theta', roi = 'latcen')
For both regions of interest, we do not find any significant clusters.
plotPermTestSmallLargeDiffWavesTFRs(freqs = 'alpha', roi = 'medfro')
plotPermTestSmallLargeDiffWavesTFRs(freqs = 'alpha', roi = 'latcen')
For both regions of interest, we do not find any significant clusters.
plotPermTestSmallLargeDiffWavesTFRs(freqs = 'beta', roi = 'medfro')
plotPermTestSmallLargeDiffWavesTFRs(freqs = 'beta', roi = 'latcen')
We only find a significant cluster for the lateral central ROI, during random rotation training. This occurs around 800 ms post-feedback, where beta power seems to be increased for large errors compared to small errors.
getSmallLargeTFRPvalStats(comparison = 'SmallvsLarge', erps = 'frn', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 theta_medfro_rot 5 48 0.025 0.235 0.069
## 2 1 theta_medfro_rdm NA NA NA NA NA
## 3 2 theta_medfro_mir 0 11 0.000 0.050 0.193
## 4 3 alpha_medfro_rot NA NA NA NA NA
## 5 4 alpha_medfro_rdm NA NA NA NA NA
## 6 5 alpha_medfro_mir NA NA NA NA NA
## 7 6 beta_medfro_rot NA NA NA NA NA
## 8 7 beta_medfro_rdm NA NA NA NA NA
## 9 8 beta_medfro_mir NA NA NA NA NA
getSmallLargeTFRPvalStats(comparison = 'SmallvsLarge', erps = 'frn', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_latcen_rot NA NA NA NA
## 2 1 theta_latcen_rdm NA NA NA NA
## 3 2 theta_latcen_mir 0 8 0.00 0.035
## 4 3 alpha_latcen_rot NA NA NA NA
## 5 4 alpha_latcen_rdm NA NA NA NA
## 6 5 alpha_latcen_mir NA NA NA NA
## 7 6 beta_latcen_rot NA NA NA NA
## 8 7 beta_latcen_rdm 54 73 0.27 0.360
## 9 8 beta_latcen_rdm 104 114 0.52 0.565
## 10 9 beta_latcen_rdm 128 134 0.64 0.665
## 11 10 beta_latcen_rdm 158 183 0.79 0.910
## 12 11 beta_latcen_mir 168 174 0.84 0.865
## p_values
## 1 NA
## 2 NA
## 3 0.276
## 4 NA
## 5 NA
## 6 NA
## 7 NA
## 8 0.052
## 9 0.191
## 10 0.281
## 11 0.029
## 12 0.452
Next, we subtract the small from the large error conditions, across the different perturbation types. Then, we compare each perturbation type with the other two. Statistical analyses will still be based from the cluster-based permutation tests conducted on these difference waves.
plotPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'theta', roi = 'medfro')
plotPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'theta', roi = 'latcen')
We do not find any significant clusters.
plotPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'alpha', roi = 'medfro')
plotPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'alpha', roi = 'latcen')
We do not find any significant clusters.
plotPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'beta', roi = 'medfro')
plotPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'beta', roi = 'latcen')
We find significant clusters in the lateral central ROI, when comparing the fixed rotation and mirror with the random rotation perturbation.
getSmallLargeTFRPvalStats(comparison = 'PerturbTypeComp', erps = 'frn', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_medfro_rotvmir NA NA NA NA
## 2 1 theta_medfro_rotvrdm NA NA NA NA
## 3 2 theta_medfro_mirvrdm NA NA NA NA
## 4 3 alpha_medfro_rotvmir NA NA NA NA
## 5 4 alpha_medfro_rotvrdm NA NA NA NA
## 6 5 alpha_medfro_mirvrdm NA NA NA NA
## 7 6 beta_medfro_rotvmir 95 109 0.475 0.540
## 8 7 beta_medfro_rotvrdm 91 115 0.455 0.570
## 9 8 beta_medfro_rotvrdm 124 128 0.620 0.635
## 10 9 beta_medfro_rotvrdm 165 173 0.825 0.860
## 11 10 beta_medfro_rotvrdm 183 190 0.915 0.945
## 12 11 beta_medfro_mirvrdm 168 170 0.840 0.845
## p_values
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## 7 0.217
## 8 0.059
## 9 0.327
## 10 0.261
## 11 0.286
## 12 0.434
getSmallLargeTFRPvalStats(comparison = 'PerturbTypeComp', erps = 'frn', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_latcen_rotvmir 0 1 0.000 0.000
## 2 1 theta_latcen_rotvrdm NA NA NA NA
## 3 2 theta_latcen_mirvrdm NA NA NA NA
## 4 3 alpha_latcen_rotvmir NA NA NA NA
## 5 4 alpha_latcen_rotvrdm NA NA NA NA
## 6 5 alpha_latcen_mirvrdm 163 175 0.815 0.870
## 7 6 beta_latcen_rotvmir NA NA NA NA
## 8 7 beta_latcen_rotvrdm 102 115 0.510 0.570
## 9 8 beta_latcen_rotvrdm 127 132 0.635 0.655
## 10 9 beta_latcen_rotvrdm 155 189 0.775 0.940
## 11 10 beta_latcen_mirvrdm 60 71 0.300 0.350
## 12 11 beta_latcen_mirvrdm 120 135 0.600 0.670
## 13 12 beta_latcen_mirvrdm 158 184 0.790 0.915
## p_values
## 1 0.297
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 0.193
## 7 NA
## 8 0.168
## 9 0.278
## 10 0.030
## 11 0.227
## 12 0.112
## 13 0.036
Next, we show TFR plots anad analyses time-locked to the go signal onset. We include time points from -1.5 seconds to zero, but focus our analyses on the second prior to the go signal. That is, once the target is cued until they are allowed to move towards the target.
We split the data into the different conditions, in a similar manner as above.
For each ROI, we calculate the mean power (µV²) within each participant of the following frequency bands: theta (6-8 Hz), alpha (9-13 Hz), and beta (13-25 Hz). We then compare these mean frequencies between early and late training for the different perturbation types.
First, we compare each early or late condition to the aligned baseline condition. For statistical analyses, we implemented a cluster-based permutation t-test. Clusters of time points that exceed the t-value threshold (determined by a t-distribution, given a p-value of 0.05 and sample size of 32) will be shown in light orange or red colors, while clusters of time points that significantly differ from chance after 1000 permutations will be shown in dark orange or red colors.
plotGoOnsetPermTestEarlyLateTFRs(freqs = 'theta', roi = 'medfro')
plotGoOnsetPermTestEarlyLateTFRs(freqs = 'theta', roi = 'latcen')
plotGoOnsetPermTestEarlyLateTFRs(freqs = 'alpha', roi = 'medfro')
plotGoOnsetPermTestEarlyLateTFRs(freqs = 'alpha', roi = 'latcen')
plotGoOnsetPermTestEarlyLateTFRs(freqs = 'beta', roi = 'medfro')
plotGoOnsetPermTestEarlyLateTFRs(freqs = 'beta', roi = 'latcen')
getEarlyLateTFRPvalStats(comparison = 'vsAligned', erps = 'lrp', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 theta_earlyrot NA NA NA NA NA
## 2 1 theta_laterot 27 48 -0.865 -0.765 0.176
## 3 2 theta_earlyrdm NA NA NA NA NA
## 4 3 theta_laterdm NA NA NA NA NA
## 5 4 theta_earlymir NA NA NA NA NA
## 6 5 theta_latemir 50 72 -0.750 -0.645 0.197
## 7 6 alpha_earlyrot NA NA NA NA NA
## 8 7 alpha_laterot NA NA NA NA NA
## 9 8 alpha_earlyrdm 77 178 -0.615 -0.115 0.007
## 10 9 alpha_laterdm 132 155 -0.340 -0.230 0.146
## 11 10 alpha_laterdm 176 201 -0.120 0.000 0.124
## 12 11 alpha_earlymir 188 201 -0.060 0.000 0.190
## 13 12 alpha_latemir 128 201 -0.360 0.000 0.014
## 14 13 beta_earlyrot 55 58 -0.725 -0.715 0.447
## 15 14 beta_earlyrot 147 181 -0.265 -0.100 0.024
## 16 15 beta_laterot 42 53 -0.790 -0.740 0.194
## 17 16 beta_earlyrdm 168 178 -0.160 -0.115 0.364
## 18 17 beta_laterdm 113 125 -0.435 -0.380 0.221
## 19 18 beta_laterdm 140 201 -0.300 0.000 0.008
## 20 19 beta_earlymir 166 183 -0.170 -0.090 0.182
## 21 20 beta_latemir 140 201 -0.300 0.000 0.004
getEarlyLateTFRPvalStats(comparison = 'vsAligned', erps = 'lrp', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 theta_earlyrot 0 22 -1.000 -0.895 0.166
## 2 1 theta_laterot 18 52 -0.910 -0.745 0.090
## 3 2 theta_earlyrdm 24 41 -0.880 -0.800 0.206
## 4 3 theta_laterdm 111 166 -0.445 -0.175 0.056
## 5 4 theta_earlymir 12 32 -0.940 -0.845 0.173
## 6 5 theta_latemir 38 65 -0.810 -0.680 0.125
## 7 6 alpha_earlyrot NA NA NA NA NA
## 8 7 alpha_laterot NA NA NA NA NA
## 9 8 alpha_earlyrdm NA NA NA NA NA
## 10 9 alpha_laterdm NA NA NA NA NA
## 11 10 alpha_earlymir 26 37 -0.870 -0.820 0.244
## 12 11 alpha_latemir 127 201 -0.365 0.000 0.011
## 13 12 beta_earlyrot 78 95 -0.610 -0.530 0.149
## 14 13 beta_earlyrot 166 185 -0.170 -0.080 0.105
## 15 14 beta_laterot NA NA NA NA NA
## 16 15 beta_earlyrdm NA NA NA NA NA
## 17 16 beta_laterdm 20 39 -0.900 -0.810 0.088
## 18 17 beta_laterdm 118 180 -0.410 -0.105 0.015
## 19 18 beta_earlymir NA NA NA NA NA
## 20 19 beta_latemir 30 41 -0.850 -0.800 0.211
## 21 20 beta_latemir 130 201 -0.350 0.000 0.018
Next, we subtract the aligned condition from each early and late condition, across the different perturbation types. Statistical analyses will still be based from the cluster-based permutation tests conducted on these difference waves
plotGoOnsetPermTestEarlyLateDiffWavesTFRs(freqs = 'theta', roi = 'medfro')
plotGoOnsetPermTestEarlyLateDiffWavesTFRs(freqs = 'theta', roi = 'latcen')
We do not find significant clusters.
plotGoOnsetPermTestEarlyLateDiffWavesTFRs(freqs = 'alpha', roi = 'medfro')
plotGoOnsetPermTestEarlyLateDiffWavesTFRs(freqs = 'alpha', roi = 'latcen')
We find differences in both ROIs when comparing early and late random perturbation training. In both ROIs, alpha power is decreased in late random training compared to early.
plotGoOnsetPermTestEarlyLateDiffWavesTFRs(freqs = 'beta', roi = 'medfro')
plotGoOnsetPermTestEarlyLateDiffWavesTFRs(freqs = 'beta', roi = 'latcen')
We find differences in both ROIs when comparing early and late random perturbation training. In both ROIs, beta power is decreased in late random training compared to early.
getEarlyLateTFRPvalStats(comparison = 'EarlyvsLate', erps = 'lrp', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_medfro_rot NA NA NA NA
## 2 1 theta_medfro_rdm NA NA NA NA
## 3 2 theta_medfro_mir NA NA NA NA
## 4 3 alpha_medfro_rot NA NA NA NA
## 5 4 alpha_medfro_rdm 22 27 -0.89 -0.87
## 6 5 alpha_medfro_rdm 82 201 -0.59 0.00
## 7 6 alpha_medfro_mir NA NA NA NA
## 8 7 beta_medfro_rot NA NA NA NA
## 9 8 beta_medfro_rdm 120 151 -0.40 -0.25
## 10 9 beta_medfro_mir NA NA NA NA
## p_values
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 0.296
## 6 0.006
## 7 NA
## 8 NA
## 9 0.049
## 10 NA
getEarlyLateTFRPvalStats(comparison = 'EarlyvsLate', erps = 'lrp', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_latcen_rot NA NA NA NA
## 2 1 theta_latcen_rdm NA NA NA NA
## 3 2 theta_latcen_mir NA NA NA NA
## 4 3 alpha_latcen_rot NA NA NA NA
## 5 4 alpha_latcen_rdm 110 174 -0.450 -0.135
## 6 5 alpha_latcen_mir NA NA NA NA
## 7 6 beta_latcen_rot NA NA NA NA
## 8 7 beta_latcen_rdm 23 37 -0.885 -0.820
## 9 8 beta_latcen_rdm 71 78 -0.645 -0.615
## 10 9 beta_latcen_rdm 122 154 -0.390 -0.235
## 11 10 beta_latcen_mir NA NA NA NA
## p_values
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 0.034
## 6 NA
## 7 NA
## 8 0.201
## 9 0.332
## 10 0.032
## 11 NA
Next, we subtract the early from the late condition, across the different perturbation types. Then, we compare each perturbation type with the other two. Statistical analyses will still be based from the cluster-based permutation tests conducted on these difference waves.
plotGoOnsetPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'theta', roi = 'medfro')
plotGoOnsetPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'theta', roi = 'latcen')
We do not observe any significant clusters for both regions of interest.
plotGoOnsetPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'alpha', roi = 'medfro')
plotGoOnsetPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'alpha', roi = 'latcen')
We do not observe any significant clusters for both regions of interest.
plotGoOnsetPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'beta', roi = 'medfro')
plotGoOnsetPermTestPTypeEarlyLateDiffWavesTFRs(freqs = 'beta', roi = 'latcen')
We do not observe any significant clusters for both regions of interest.
getEarlyLateTFRPvalStats(comparison = 'PerturbTypeComp', erps = 'lrp', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_medfro_rotvmir NA NA NA NA
## 2 1 theta_medfro_rotvrdm NA NA NA NA
## 3 2 theta_medfro_mirvrdm NA NA NA NA
## 4 3 alpha_medfro_rotvmir NA NA NA NA
## 5 4 alpha_medfro_rotvrdm 102 131 -0.490 -0.350
## 6 5 alpha_medfro_rotvrdm 196 201 -0.020 0.000
## 7 6 alpha_medfro_mirvrdm 19 30 -0.905 -0.855
## 8 7 alpha_medfro_mirvrdm 116 146 -0.420 -0.275
## 9 8 beta_medfro_rotvmir NA NA NA NA
## 10 9 beta_medfro_rotvrdm 56 68 -0.720 -0.665
## 11 10 beta_medfro_rotvrdm 147 159 -0.265 -0.210
## 12 11 beta_medfro_mirvrdm NA NA NA NA
## p_values
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 0.104
## 6 0.292
## 7 0.233
## 8 0.103
## 9 NA
## 10 0.212
## 11 0.238
## 12 NA
getEarlyLateTFRPvalStats(comparison = 'PerturbTypeComp', erps = 'lrp', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_latcen_rotvmir NA NA NA NA
## 2 1 theta_latcen_rotvrdm NA NA NA NA
## 3 2 theta_latcen_mirvrdm NA NA NA NA
## 4 3 alpha_latcen_rotvmir NA NA NA NA
## 5 4 alpha_latcen_rotvrdm NA NA NA NA
## 6 5 alpha_latcen_mirvrdm NA NA NA NA
## 7 6 beta_latcen_rotvmir NA NA NA NA
## 8 7 beta_latcen_rotvrdm 23 31 -0.885 -0.85
## 9 8 beta_latcen_rotvrdm 140 145 -0.300 -0.28
## 10 9 beta_latcen_mirvrdm NA NA NA NA
## p_values
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## 7 NA
## 8 0.289
## 9 0.348
## 10 NA
We then repeat the same analyses steps but now compare small and large error conditions.
plotGoOnsetPermTestSmallLargeTFRs(freqs = 'theta', roi = 'medfro')
plotGoOnsetPermTestSmallLargeTFRs(freqs = 'theta', roi = 'latcen')
plotGoOnsetPermTestSmallLargeTFRs(freqs = 'alpha', roi = 'medfro')
plotGoOnsetPermTestSmallLargeTFRs(freqs = 'alpha', roi = 'latcen')
plotGoOnsetPermTestSmallLargeTFRs(freqs = 'beta', roi = 'medfro')
plotGoOnsetPermTestSmallLargeTFRs(freqs = 'beta', roi = 'latcen')
getSmallLargeTFRPvalStats(comparison = 'vsAligned', erps = 'lrp', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 theta_smallrot NA NA NA NA NA
## 2 1 theta_largerot NA NA NA NA NA
## 3 2 theta_smallrdm NA NA NA NA NA
## 4 3 theta_largerdm NA NA NA NA NA
## 5 4 theta_smallmir NA NA NA NA NA
## 6 5 theta_largemir NA NA NA NA NA
## 7 6 alpha_smallrot NA NA NA NA NA
## 8 7 alpha_largerot NA NA NA NA NA
## 9 8 alpha_smallrdm 180 201 -0.100 0.000 0.156
## 10 9 alpha_largerdm NA NA NA NA NA
## 11 10 alpha_smallmir 89 101 -0.555 -0.500 0.216
## 12 11 alpha_smallmir 137 201 -0.315 0.000 0.038
## 13 12 alpha_largemir 178 194 -0.110 -0.035 0.233
## 14 13 beta_smallrot 42 50 -0.790 -0.755 0.235
## 15 14 beta_smallrot 167 190 -0.165 -0.055 0.064
## 16 15 beta_largerot 20 101 -0.900 -0.500 0.005
## 17 16 beta_largerot 138 186 -0.310 -0.075 0.013
## 18 17 beta_smallrdm 166 186 -0.170 -0.075 0.139
## 19 18 beta_largerdm NA NA NA NA NA
## 20 19 beta_smallmir 148 201 -0.260 0.000 0.015
## 21 20 beta_largemir 166 188 -0.170 -0.065 0.104
getSmallLargeTFRPvalStats(comparison = 'vsAligned', erps = 'lrp', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 theta_smallrot NA NA NA NA NA
## 2 1 theta_largerot NA NA NA NA NA
## 3 2 theta_smallrdm NA NA NA NA NA
## 4 3 theta_largerdm 126 129 -0.370 -0.360 0.223
## 5 4 theta_smallmir NA NA NA NA NA
## 6 5 theta_largemir NA NA NA NA NA
## 7 6 alpha_smallrot 10 22 -0.950 -0.895 0.246
## 8 7 alpha_largerot 188 201 -0.060 0.000 0.220
## 9 8 alpha_smallrdm 161 201 -0.195 0.000 0.055
## 10 9 alpha_largerdm NA NA NA NA NA
## 11 10 alpha_smallmir 170 201 -0.150 0.000 0.075
## 12 11 alpha_largemir 171 200 -0.145 -0.005 0.107
## 13 12 beta_smallrot 118 132 -0.410 -0.345 0.229
## 14 13 beta_largerot 18 100 -0.910 -0.505 0.001
## 15 14 beta_largerot 145 184 -0.275 -0.085 0.057
## 16 15 beta_smallrdm 11 26 -0.945 -0.875 0.222
## 17 16 beta_smallrdm 170 188 -0.150 -0.065 0.160
## 18 17 beta_largerdm NA NA NA NA NA
## 19 18 beta_smallmir 23 42 -0.885 -0.795 0.129
## 20 19 beta_smallmir 125 148 -0.375 -0.265 0.107
## 21 20 beta_smallmir 190 201 -0.050 0.000 0.250
## 22 21 beta_largemir 165 190 -0.175 -0.055 0.059
Next, we subtract the aligned condition from each small and large condition, across the different perturbation types. Statistical analyses will still be based from the cluster-based permutation tests conducted on these difference waves.
plotGoOnsetPermTestSmallLargeDiffWavesTFRs(freqs = 'theta', roi = 'medfro')
plotGoOnsetPermTestSmallLargeDiffWavesTFRs(freqs = 'theta', roi = 'latcen')
For both regions of interest, we do not find any significant clusters.
plotGoOnsetPermTestSmallLargeDiffWavesTFRs(freqs = 'alpha', roi = 'medfro')
plotGoOnsetPermTestSmallLargeDiffWavesTFRs(freqs = 'alpha', roi = 'latcen')
We find a significant cluster for random condition in lateral central areas, where small errors are more negative than large errors.
plotGoOnsetPermTestSmallLargeDiffWavesTFRs(freqs = 'beta', roi = 'medfro')
plotGoOnsetPermTestSmallLargeDiffWavesTFRs(freqs = 'beta', roi = 'latcen')
We find differences in both ROIs for the rotation perturbation, where large errors show more negative power than small errors.
getSmallLargeTFRPvalStats(comparison = 'SmallvsLarge', erps = 'lrp', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_medfro_rot NA NA NA NA
## 2 1 theta_medfro_rdm NA NA NA NA
## 3 2 theta_medfro_mir NA NA NA NA
## 4 3 alpha_medfro_rot 13 25 -0.935 -0.880
## 5 4 alpha_medfro_rot 68 89 -0.660 -0.560
## 6 5 alpha_medfro_rdm NA NA NA NA
## 7 6 alpha_medfro_mir NA NA NA NA
## 8 7 beta_medfro_rot 15 28 -0.925 -0.865
## 9 8 beta_medfro_rot 78 87 -0.610 -0.570
## 10 9 beta_medfro_rot 137 160 -0.315 -0.205
## 11 10 beta_medfro_rdm NA NA NA NA
## 12 11 beta_medfro_mir 89 101 -0.555 -0.500
## p_values
## 1 NA
## 2 NA
## 3 NA
## 4 0.221
## 5 0.170
## 6 NA
## 7 NA
## 8 0.177
## 9 0.259
## 10 0.034
## 11 NA
## 12 0.250
getSmallLargeTFRPvalStats(comparison = 'SmallvsLarge', erps = 'lrp', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_latcen_rot NA NA NA NA
## 2 1 theta_latcen_rdm NA NA NA NA
## 3 2 theta_latcen_mir NA NA NA NA
## 4 3 alpha_latcen_rot 8 22 -0.960 -0.895
## 5 4 alpha_latcen_rdm 146 201 -0.270 0.000
## 6 5 alpha_latcen_mir NA NA NA NA
## 7 6 beta_latcen_rot 16 97 -0.920 -0.520
## 8 7 beta_latcen_rot 158 173 -0.210 -0.140
## 9 8 beta_latcen_rdm NA NA NA NA
## 10 9 beta_latcen_mir 26 38 -0.870 -0.815
## 11 10 beta_latcen_mir 109 142 -0.455 -0.295
## p_values
## 1 NA
## 2 NA
## 3 NA
## 4 0.228
## 5 0.033
## 6 NA
## 7 0.001
## 8 0.226
## 9 NA
## 10 0.271
## 11 0.072
Next, we subtract the small from the large error conditions, across the different perturbation types. Then, we compare each perturbation type with the other two. Statistical analyses will still be based from the cluster-based permutation tests conducted on these difference waves.
plotGoOnsetPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'theta', roi = 'medfro')
plotGoOnsetPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'theta', roi = 'latcen')
We do not find any significant clusters.
plotGoOnsetPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'alpha', roi = 'medfro')
plotGoOnsetPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'alpha', roi = 'latcen')
For the lateral central area, we find a difference between fixed rotation and mirror perturbations, where rotation alpha power is decreased compared to mirror, just following the target onset.
plotGoOnsetPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'beta', roi = 'medfro')
plotGoOnsetPermTestPTypeSmallLargeDiffWavesTFRs(freqs = 'beta', roi = 'latcen')
For the lateral central area, we find a significant cluster when comparing mirror and fixed rotation, occurring just after target onset. Beta power for the fixed rotation is lower compared to mirror. We also observe more negative power for rotation compared to mirror in medial frontal areas, but this occurs later and for a much shorter time.
getSmallLargeTFRPvalStats(comparison = 'PerturbTypeComp', erps = 'lrp', roi = 'medfro')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_medfro_rotvmir NA NA NA NA
## 2 1 theta_medfro_rotvrdm NA NA NA NA
## 3 2 theta_medfro_mirvrdm 130 154 -0.350 -0.235
## 4 3 alpha_medfro_rotvmir 9 32 -0.955 -0.845
## 5 4 alpha_medfro_rotvmir 62 107 -0.690 -0.470
## 6 5 alpha_medfro_rotvmir 156 164 -0.220 -0.185
## 7 6 alpha_medfro_rotvrdm 11 30 -0.945 -0.855
## 8 7 alpha_medfro_mirvrdm NA NA NA NA
## 9 8 beta_medfro_rotvmir 13 41 -0.935 -0.800
## 10 9 beta_medfro_rotvmir 53 64 -0.735 -0.685
## 11 10 beta_medfro_rotvmir 76 99 -0.620 -0.510
## 12 11 beta_medfro_rotvmir 134 164 -0.330 -0.185
## 13 12 beta_medfro_rotvrdm 139 151 -0.305 -0.250
## 14 13 beta_medfro_mirvrdm NA NA NA NA
## p_values
## 1 NA
## 2 NA
## 3 0.134
## 4 0.151
## 5 0.060
## 6 0.271
## 7 0.160
## 8 NA
## 9 0.061
## 10 0.214
## 11 0.095
## 12 0.038
## 13 0.187
## 14 NA
getSmallLargeTFRPvalStats(comparison = 'PerturbTypeComp', erps = 'lrp', roi = 'latcen')
## X condition clust_idx_start clust_idx_end time_start time_end
## 1 0 theta_latcen_rotvmir NA NA NA NA
## 2 1 theta_latcen_rotvrdm 59 63 -0.705 -0.690
## 3 2 theta_latcen_rotvrdm 123 137 -0.385 -0.320
## 4 3 theta_latcen_mirvrdm 128 147 -0.360 -0.270
## 5 4 alpha_latcen_rotvmir 7 66 -0.965 -0.675
## 6 5 alpha_latcen_rotvrdm 1 30 -0.995 -0.855
## 7 6 alpha_latcen_mirvrdm NA NA NA NA
## 8 7 beta_latcen_rotvmir 13 75 -0.935 -0.630
## 9 8 beta_latcen_rotvmir 85 98 -0.575 -0.515
## 10 9 beta_latcen_rotvmir 135 163 -0.325 -0.190
## 11 10 beta_latcen_rotvmir 199 201 -0.005 0.000
## 12 11 beta_latcen_rotvrdm 15 30 -0.925 -0.855
## 13 12 beta_latcen_rotvrdm 34 41 -0.830 -0.800
## 14 13 beta_latcen_rotvrdm 141 155 -0.295 -0.230
## 15 14 beta_latcen_rotvrdm 164 173 -0.180 -0.140
## 16 15 beta_latcen_mirvrdm 30 42 -0.850 -0.795
## 17 16 beta_latcen_mirvrdm 111 127 -0.445 -0.370
## p_values
## 1 NA
## 2 0.259
## 3 0.216
## 4 0.199
## 5 0.023
## 6 0.081
## 7 NA
## 8 0.007
## 9 0.232
## 10 0.092
## 11 0.413
## 12 0.190
## 13 0.380
## 14 0.232
## 15 0.360
## 16 0.292
## 17 0.190
Although we have all figures and statistical comparisons in this document, we summarize the main findings in the manuscript.
plotTFRThetaResults()
plotTFRAlphaResults()
plotTFRBetaResults()